Programmable logic controller programming system

ABSTRACT

A programming system includes a graphical data entry user interface for a plurality of sequential steps displayed to a user on a monitor. The user selects outputs to be activated for each of the sequential steps and any inputs to be monitored or timer to be enabled for the sequential steps. The inputs, outputs, and timer enable commands, and timer values identified by the user are converted into data tables each having a plurality of data elements. Each data element corresponds to one of the sequential steps. A programmable logic controller directs a process by reading the data elements corresponding to a sequential step and, for that sequential step, activating the outputs identified by the output data element, monitoring any inputs identified by the input control data element, and enabling a timer for a selected time period if identified in the input control data element.

FIELD OF THE INVENTION

[0001] The present invention relates to programmable logic controllersystems, and more particularly to methods and apparatuses forprogramming programmable logic controllers and methods and apparatusesfor directing processes through programmed programmable logiccontrollers.

BACKGROUND OF THE INVENTION

[0002] Programmable logic controllers (PLCs) are special data processorsthat are often used as controllers for machines in industrial processes.A PLC is typically programmed with a sequential program for controllinga machine, such as a pressing or marking machine, that continuouslyrepeats the same motions during, for example, an automated assemblyprocess or other manufacturing process.

[0003] Each PLC operates under the control of a program stored in itsmemory. The program responds to input signals registered at the inputsof the PLC and controls an associated piece of machinery through outputsignals at the outputs of the PLC.

[0004] The program stored in the memory of the PLC and used by the PLCto control its operation is typically expressed in what is termed“ladder logic.” Each ladder logic program comprises one or more ladderlogic statements. In the PLC art, these ladder logic statements areoften termed “rungs.” Each ladder logic statement defines therelationship between an output variable and, in most cases, one or moreinput variables. Input variables include variables corresponding to theinputs of the PLC, and output variables include variables correspondingto the signals at the output terminals of the PLC. Ladder logicstatements and programs are often expressed in terms of ladder logicgraphs, such as shown and described in U.S. Pat. No. 5,237,652 toMcManus, the entirety of which is hereby incorporated herein byreference.

[0005] Currently, at the design stage for a process, custom software istypically developed for each PLC used in the process. This software istypically written in the ladder logic format by a controls engineer,debugged, and then tested on the intended machinery. The machine andcustom programmed PLC are then shipped to the customer where amaintenance person is trained to operate the machine, often withextensive training on the custom program and ladder logic programminggenerally.

[0006] This programming system and method suffer from several drawbacks.First, a programmer must be proficient in ladder logic programming inorder to program the PLC to operate a piece of machinery. Thisprogrammer must, therefore, also be proficient in ladder logicprogramming in order to debug the program and identify the cause ofmalfunctions during operation of the machine controlled by the PLC.Also, even slight changes in the operating parameters of the machinerequire development of a new control program for the PLC. Thisdependence upon familiarity with the ladder logic programming systemleads to time consuming development and debugging of control programs byone having intimate knowledge of ladder logic programming. Thisdependence, in turn, also forces many businesses to specially orderprogrammed PLCs and PLC controlled machinery and/or staff an employeefamiliar with ladder logic programming.

[0007] Therefore, there remains a need for an improved system forprogramming PLCs that provides for a simplified method of programming aPLC. Still further, there remains a need for a PLC which does notrequire complete reprogramming of the PLC to accommodate changes in theoperating parameters of a controlled piece of machinery.

SUMMARY OF THE INVENTION

[0008] The present invention is a method and apparatus for controlling aprocess with a programmable logic controller that includes a pluralityof inputs and a plurality of outputs. The programmable logic controllerdirects the process through signals at the outputs in response to inputsignals at the inputs. The programmable logic controller accesses aninput control data element for a sequential step and an output dataelement for the step from an input control data table and an output datatable, respectively. The input control data table includes input controldata elements for a plurality of sequential steps that include thesequential step and the output data table includes a plurality of outputdata elements for the plurality of sequential steps. The programmablelogic controller provides output signals at outputs of the programmablelogic controller identified by the output data element to be activatedfor the sequential step. The programmable logic controller also monitorsinputs identified by the input control data element to be monitored forthe sequential step and performs a next one of the plurality ofsequential steps if an input signal is detected for at least one of themonitored inputs.

[0009] Another aspect of the invention is an apparatus and method forprogramming the programmable logic controller. A graphical data entryuser interface is displayed to a user on a monitor for a plurality ofsequential steps. The graphical data entry user interface representsrespective inputs to be monitored by the programmable logic controllerat each of the sequential steps and respective outputs to be initiatedby the programmable logic controller at respective ones of thesequential steps. An identification of at least one input selected bythe user to be monitored for at least one of the sequential steps and anidentification of at least one output selected by the user to beinitiated for the at least one of the sequential steps is received viathe graphical data entry user interface. The identification of the atleast one input selected by the user is converted into an input controldata table. The input control data table includes a plurality of inputcontrol data elements. Each of the input control data elementscorresponds to a respective one of the plurality of sequential steps anda respective one the input control data elements represents the at leastone input selected by the user. The identification of the at least oneoutput selected by the user is converted into an output data table. Theoutput data table includes a plurality of output data elements. Each ofthe output data elements corresponds to a respective one of theplurality of sequential steps. A respective one of the output dataelements represents the at least one output selected by the user.

[0010] The above and other features of the present invention will bebetter understood from the following detailed description of thepreferred embodiments of the invention that is provided in connectionwith the accompanying drawings.

BRIEF DESCRIPTION OF THE DRAWINGS

[0011]FIG. 1 is a block diagram of an exemplary programmable logiccontroller programming and control system according to the presentinvention;

[0012]FIG. 2 is an exemplary graphical data entry user interface for thesystem of FIG. 1;

[0013]FIG. 3 is an illustration of an exemplary input control and outputdata table for the system of FIG. 1;

[0014]FIG. 4 is an exemplary timer value data table for the system ofFIG. 1; and

[0015] FIGS. 5-7 are flow charts illustrating the operation of theexemplary programmable logic controller of FIG. 1.

DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

[0016] The apparatus and method for controlling a process allow theoperating parameters of a programmable logic controller to bereconfigured simply by manipulating the data elements of the inputcontrol data table and output data table. No reprogramming, other thanthis manipulation, is required for the PLC control program, therebyrelieving operators of their dependence on ladder logic programming anddebugging as well as eliminating the need to order custom programmedPLCs. Further, an operator does not have to search a complex ladderlogic program to identify sources of operational faults.

[0017] The exemplary embodiment of the present invention describedherein allows for the programming of a programmable logic controllerusing a user friendly graphical interface without any knowledge ofladder logic programming by the programmer. Programming time is greatlyreduced and the debugging process is simplified. The operatingparameters of a programable logic controller executing instructions frominput control data table and output data table may be quickly programmedor reconfigured simply by generating or modifying the input control datatables and output data tables using the method and apparatus of theexemplary embodiment. Further, reductions in software development timelead to a greater ability to meet increasing demands to push products tomarket faster, as well as a more flexible and adaptable product.

[0018]FIG. 1 is a block diagram of an exemplary embodiment of aprogrammable logic controller programming and control system 10according to the present invention. A programmable logic controller(PLC) 14 includes a plurality of inputs coupled to a plurality of inputdevices 16, such as a start button and various switches. The PLC 14 alsoincludes a plurality of outputs coupled to a plurality of outputdevices, such a start light, a stop light, air valve, motor or anindustrial machine such as, but not limited to, a pick-and-placestation, part presence probe, O-ring loader, ultra-sonic welder, parttorque or screw station, empty nest identifier, part orientation probe,leak and flow tester, electrical characteristic tester, pneumatic ram,crimper and former, liquid dispenser, glue dispenser, ultra violetgluer, machining device, soldering device, grinder, finishing andpolishing device, and charger, to name a few. An operator display 19 iscoupled to the PLC 14. The operator display 19 allows the PLC 14 tocommunicate messages to a user during operation, such as alarms, errordefault messages, status, cycle times, and other information.

[0019]FIG. 2 illustrates an exemplary graphical data entry userinterface 20 for the PLC 14. The user interface 20 is preferablygenerated on a monitor coupled to a computer 12 programmed withprogramming interface software. The software may be written in any ofnumerous programming languages, but is preferably written in a windowbased programming language. An example of one preferred programminglanguage is visual basic.

[0020] In one exemplary embodiment of the present invention, a graphicaldata entry user interface 20 is displayed in a windows environment thatprovides for simplified configuration and navigation. An exemplaryinterface 20 includes an input control grid 22 and an output grid 24.Each line 30 of the input control grid 22 and output grid 24 isassociated with a step 26. The user interface 20 of FIG. 2 providesthirty-two programmable steps 26 labeled “STEP0 ” through “STEP31,”although the present invention is in no way limited to the number ofsteps 26 shown in the exemplary interface 20 of FIG. 2.

[0021] An exemplary input control grid line 30 for each step 26 includessixteen checkboxes 32, and an exemplary output grid line 30 for eachstep 26 includes sixteen checkboxes 32. Each of these checkboxes 32 maybe checked or un-checked by a user simply by “clicking” on a selectedcheckbox 32 using a pointing device, such as a mouse operating in awindows environment. Each checkbox 32 of a line 30 of the output grid 24represents a different output of the PLC 14. Similarly, each checkbox 32of a line 30 of the input control grid 22 represents a different inputof the PLC 14 or other control command for the PLC 14, as is describedbelow.

[0022] It should be understood that the invention is in no way limitedto the use of checkboxes to represent discrete inputs and outputs. Forexample, the user could input 1's and 0's to represent the present of a“check” and the absence of a “check,” respectively.

[0023] The interface 20 of FIG. 2 is shown with the input control grid22 and output grid 24 already configured for illustrative purposes.Referring to STEP0 and output grid 24, the checkbox 32 for output one ischecked, and the remaining checkboxes 32 of output grid line 30corresponding to STEP0 are un-checked. This configuration for the outputgrid line 30 for STEP0 indicates that an output signal should beproduced by the PLC 14 at its first output at STEP0, i.e., output one isturned “on”, and that all other outputs of the PLC 14 should remain“off” at STEP0. The input control grid line 30 of input control grid 22for STEP0 indicates with a check placed in the input control checkbox 32for input three that the PLC 14 should remain at STEP0 until an inputsignal is detected at input three of the PLC 14. Once an input signal isdetected at input three, the PLC 14 should execute STEP1.

[0024] The configuration of the output grid line 30 for STEP1 indicatesthat outputs zero and three should be turned on by the PLC 14 at STEP1,output one should be turned off (i.e., output one is not checked), andall of the other outputs should remain off. The input control grid line30 for STEP1 indicates that the PLC 14 should not execute STEP2 until aninput signal is detected at input one of the PLC 14.

[0025] At STEP2, the configuration of the output grid line 30 of outputgrid 24 indicates that outputs zero and three remain on while the PLC 14executes STEP2. A timer enable command checkbox 32 is checked in theinput control grid line 30 of the input control grid 22 for STEP 2. Whenthe PLC 14 executes STEP2, it enables a timer in the PLC 14. A timervalue 28 of “200” is shown selected for STEP2. The timer value 28, maybe, for example, expressed as a multiple of a fraction of a second,e.g., a multiple of 0.01 second as shown in interface 20. By checkingthe timer enable checkbox for STEP2 and by entering “200” for the timervalue 28, the user directs that the PLC 14 should wait two seconds (200times 0.01 second) at STEP2 before proceeding to STEP3. During thistime, as mentioned above, outputs zero and three remain on.

[0026] The output grid line 30 for STEP3 has only the output checkbox 32for output zero selected. Once the PLC 14 increments to execute STEP3,therefore, output zero is turned on, or more specifically output zeroremains on from STEP 2, output three is turned off, and the remainingoutputs remain off. The input control grid line 30 for STEP3 indicatesthat the PLC 14 should not increment to STEP4 until an input signal isdetected at input zero.

[0027] The remaining steps shown in the user interface 20 of FIG. 2 aretiming steps, as indicated by the selection or check of the timer enablebox of each input control grid line 30 for STEP 4 through STEP 31. Thetimer value for each of these steps, however, is set at “0.” Therefore,the PLC 14 is directed to simply skip through STEP 4 through STEP 31 andbegin again at STEP0, described above. Also, no outputs are selected forSTEP 4 through STEP 31, meaning output zero is turned off after STEP3and no output signals are produced at outputs zero through fifteen untilthe PLC 14 executes STEP0.

[0028] More complex boolean steps may be easily programmed as describedbelow. An OR command, e.g., the PLC 14 should increment to the next stepif an input signal is detected at input zero OR input one, is programmedby checking both the checkbox 32 for input zero and input one of a line30 of input control grid 22. Also, an AND command, e.g., the PLC 14should change its outputs only after an input signal is detected at bothinput zero AND input one, is programmed with two successive steps 26where, for example, the checkbox 32 for input zero is selected for afirst step 26, the checkbox 32 for input 1 is selected for a second nextsequential step 26, and the output grid line 30 for both steps 26 areidentical.

[0029] It should be apparent that even a user with no specific knowledgeof ladder logic programming can easily program a sequential step processusing the graphical data entry user interface 20 of FIG. 2. Once a userhas configured the input control grid 22 and output grid 24 as desired,the user can select the WRITE option 34 from the user interface 20. Theconfigured input control grid 22 is converted into an input control datatable having a plurality of input control data elements. Each of theinput control data elements preferably represents inputs selected by theuser for an individual step 26. Likewise, the configured output grid 22identifying the output selection of the user for each step 26 isconverted into an output data table having a plurality of output dataelements. Each of the output data elements represents outputs selectedby the user for an individual step 26.

[0030] Each output and input data element is preferably a word havingsixteen bits, but the data elements may also be expressed in other dataformats. In this manner, the output data element for STEP0 may beexpressed as “0100000000000000” where each bit represents one of theoutput checkboxes 32 from the output grid line 30 for STEP0 of theoutput grid 24, i.e., bit zero corresponds to output zero of the PLC 14,bit one corresponds to output one of the PLC 14, etc. . . The outputdata element for STEP1 through STEP4 may be expressed, respectively, asfollows: “1001000000000000,” “1001000000000000,” “1000000000000000,” and“0000000000000000”. It should be understood from the above descriptionthat the output data elements corresponding to the selection of the userfor STEP5 through STEP31 are identical to the output data element forSTEP4.

[0031] Likewise, each input control data element is preferably a wordhaving sixteen bits. The input control data element for STEP0 may beexpressed as “0001000000000000.” The input control data elements forSTEP1 through STEP4 may be expressed, respectively, as follows:“0100000000000000,” “0000000000000001,” “1000000000000000,” and“0000000000000001”. Again, it should be apparent from the abovedescription that the input control data elements for STEP5 throughSTEP31 are identical to the input control data element for STEP4.

[0032] An exemplary input control data table and output data table areshown in FIG. 3. The tables are preferably downloaded to the localmemory of the PLC 14 from computer 12 using the WRITE command 34 of theinterface 20. In this manner, the interface 20 acts as a window into thedata tables utilized by the PLC 14 to control its operation, and theinterface 20 serves as a graphical representation of the data tables.Similarly, the tables may be read from the local memory of the PLC 14using the READ command 36 of interface 20 and reconverted into adisplay, such as shown in FIG. 2, of interface 20. The output dataelements for STEP0 through STEP31 are stored as WORD10 through WORD41,respectively. Input control data elements for STEP0 through STEP31 arestored as WORD50 through WORD81, respectively. It should be apparent toone skilled in the programmable logic controller art that the memoryallocations of FIG. 3 are illustrative of only one possible memoryallocation for the input control data table and output data table, andother configurations which provide the PLC 14 access to the inputcontrol data elements and output data elements fall within the scope ofthe present invention.

[0033] Likewise, FIG. 4 illustrates only one possible exemplary timervalue data table for the timer values of STEP0 through STEP31, and itshould be apparent that other configurations which provide theprogrammable logic controller 14 access to the timer value data elementsfall within the scope of the present invention.

[0034] An exemplary timer value data table representing theconfiguration of the graphical data entry user interface 20 of FIG. 2includes thirty-two timer value data elements. The first and second dataelements, representing timer values shown in FIG. 2 for STEP0 and STEP1,respectively, have values of zero. The third data element has a value oftwo hundred, representing the “200” timer value entered for STEP2 in theinterface 20. Timer value data elements four through thirty-one all havevalues of zero.

[0035] An exemplary graphical data entry user interface 20 may includeother features shown in FIG. 2. For example, a CLEAR option 40 may beselected to clear the input control grids 22, output grid 24, timervalues 28 and alarms 38 in order to begin a new data entry session. TheMOVE UP and MOVE DOWN options 42 may be used to move data entered on aline 30 or group of lines 30, e.g., checks, timer value and alarm code(described below), either up or down on the input control grid 22 andoutput grid 24 in order to avoid time consuming changes to the grids 22,24 when, for example, a step 26 is being added or eliminated from aprocess. In essence, the MOVE UP option 42 is a delete option and theMOVE DOWN option 42 is an insert option.

[0036] CONFIG. window 44 may be used to identify when the PLC 14 shouldreceive a start or operate signal. Processes, such as assemblyprocesses, often use several pieces of machinery each controlled bydifferent PLCs 14 and disposed along an assembly line or dial indexer.Parts proceeding through the assembly line can either be characterizedas “good” or “reject.” Some machines operate only on “good” parts, suchas glue guns, some machines operate only on “reject” parts, such asmachines that prematurely remove the part from the assembly line, andsome machines operate on both “good” and “reject” parts, such asmachines that merely orient a part or determine a part's orientation.

[0037] A PLC 14 controlling a machine that only operates on a “reject”part should not receive a start signal, unless a part in front of it isa “reject.” Likewise, a PLC 14 controlling a machine that only operateson a “good” part should not receive a start signal, unless a part infront of it is a “good” part. This start signal can come from a controlprocessor that keeps track of the “good” and “reject” status of parts isan assembly process and communicates with a PLC 14, as described in U.S.patent application Ser. No. 09/522,633, to David W. Duemler, filed Mar.3, 2000 and entitled “Modular Automated Assembly System,” (the ‘′633application”) the entire disclosure of which is hereby incorporated byreference herein. A user can select in window 44 whether the PLC 14 iscontrolling a machine that cycles on a “good” part by checking the GOODcheckbox, a “reject” part by checking the REJ. checkbox, or both a“good” and a “reject” part by checking both the GOOD and REJ.checkboxes. During the assembly process, each PLC 14 then communicatesits operating characteristic to the central processor, which then sendsthe start signal to an individual PLC 14 only when an appropriate partis before the machine controlled by the PLC 14. The READ and WRITEoptions in the CONFIG. window 44 may be selected to read a configurationfrom a PLC and to write a configuration to a PLC, respectively. A “DWIDE” option may also be selected in the CONFIG. window 44. Thisselection indicates that the machine controlled by the programmed PLC isa “double wide” machine and occupies more than one machine location inthe assembly process in the “Modular Automated Assembly System” of the′633 application.

[0038] The following example illustrates a press operation that may becontrolled by the inputs, outputs and timers selected in theconfiguration shown in the user interface 20 of FIG. 2 without anycomplex ladder logic programming. Assume the press machinery controlledby a PLC 14 is pneumatically operated. When the operator presses a startbutton 16, a press valve activates and extends a press cylinder until ithits an end-of-travel limit switch. The press then remains at thatposition for two seconds before the cylinder retracts and hits theretract limit switch.

[0039] The operating sequence is as follows: (1) STEP0—The PLC waits forthe operator to press a start button connected to input three, and astop light connected to output one is on; (2) STEP1—A valve connected tooutput three is turned on, a start light coupled to output zero is on,and the PLC waits for an extend limit switch coupled to input one to behit before executing STEP2; (3) STEP2—The valve coupled to output threecontinues to be on, the start light coupled to output zero remains on,and the PLC waits two seconds before executing STEP3; (4) STEP3—Thepress valve coupled to output three is turned off, the start lightcoupled to output zero continues to be on, and the PLC waits until aretract limit switch coupled to input zero is hit before executingSTEP4; and (5) STEP4 through STEP31—The start light coupled to outputzero is turned off, and the PLC increments from STEP4 through STEP 31 toSTEP0.

[0040] FIGS. 5-7 are flow charts illustrating the operation of anexemplary program that may be stored in the PLC 14 and control the PLC'soperation in response to the contents of an input control data table, anoutput data table, timer value data table and an alarm code data table.The operating program preferably remains the same for each PLC 14incorporating the preferred embodiment of the present invention, andonly the data tables are changed (preferably using the graphical dataentry user interface 20 of FIG. 2) in order to modify the operatingparameters of the PLC 14. It should be apparent that this featureprovides great advantages over reprogramming and debugging a PLC 14 eachtime that an operating parameter is changed.

[0041] The operating program for the PLC 14 may be written in ladderlogic and downloaded to the PLC 14 to create a “generic PLC” that isprogrammable using output, input and timer value data tables eithercreated using interface 20 of FIG. 2, or by other means, such as directmanual creation and download of the data tables and download to the PLC14 without interface 20. Even though ladder logic programming is used tocreate the exemplary PLC operating program, creation of the operatingprogram is a one time task and no knowledge of ladder logic programmingis required to create or manipulate the output, input and timer valuedata tables to create a special purpose PLC 14 for controlling a processor portion of a process. Accordingly, the operating program may becreated in other programming languages, such as C++, and downloaded tothe PLC 14.

[0042] Referring to FIG. 5, the PLC 14 first checks the value of a stepcounter. The step counter begins at zero when the program beginsexecution. If the value of the step counter is zero, then variablesOUTWD, CNTWD, and TIMVAL are set to the bit pattern or value of theoutput data element, the input control data element, and the timer valuefor STEP0, respectively. As mentioned above and referring to FIGS. 3 and4, WORD10 is the output data element for STEP0, WORD50 is the inputcontrol data element for STEP0, and TIMER0 is the timer value dataelement for STEP0. As can be seen in FIG. 7, the step counter isincremented each time that the PLC 14 is ready to execute the next step26.

[0043] It should be apparent from FIG. 5 that the input control dataelements, output data element, and timer value data elements areretrieved from the input control data table, output data table and timervalue data table, respectively, based upon the current value of the stepcounter. Accordingly, if the step counter is currently at thirty-one,then the OUTWD variable is set to the output data element of WORD41, theCNTWD variable is set to the input control data element of WORD81, andthe TIMVAL variable is set to the timer value data element of TIMER31.If the step counter value is greater than 31, then the step counter isreset to zero, thereby restarting the entire process.

[0044] Once the OUTWD, CNTWD, and TIMVAL variables are set to the dataelements for the step 26 identified by the current value of the stepcounter, the control program preferably operates as illustrated in FIG.6. In FIG. 6, each bit of the variable OUTWD is checked. Any bit that isa “1” (i.e., a logical high) indicates that the output of the PLC 14corresponding to that bit should be on for the current step, and any bitthat is a “0” (i.e., a logical zero) indicates that the output of thePLC 14 corresponding to that bit should be off. Note that the “on”condition means an output signal is present at the output and an “off”condition means no output signal is produced at the output. If bit zeroof OUTWD is a “1”, output zero of the PLC 14 is turned on, if bit one ofOUTWD is a “1”, output one of the PLC is turned on, etc. . . Any outputdevice 18 coupled to the outputs then responds according to its design.For example, a start light may turn on if coupled to an output signaland remain off if no output signal is present.

[0045] Once the outputs of the PLC 14 indicated by the OUTWD variableare turned on, the PLC preferably operates as illustrated in FIG. 7where the CNTWD and TIMVAL variables are utilized. The CNTWD variable isused to increment the step counter, and the step counter does notincrement until the condition or conditions identified by the CNTWDvariable are satisfied. Bit zero of CNTWD is preferably examined first,although a random examination of the bits may also be used. In anexemplary embodiment of the present invention, if bit zero is a “1”,then checkbox zero of the input control grid line 30 for the step 26identified by the current value of the step counter is checked. Asmentioned above, this configuration indicates that the user has directedthe PLC 14 to increment to the next step when an input signal isdetected at the input zero of the PLC 14. If an input signal isdetected, the step counter is incremented by one as shown in FIG. 7. Ifthe input signal is not yet detected at input zero of the PLC, bit oneof CNTWD is examined to identify whether it is a “1”. If it is not a“1”, bit two of CNTWD is checked to identify whether it is a “1”. If bitone of CNTWD is a “1”, however, the PLC 14 checks to see whether aninput signal is present at input one. If an input signal is present,then the step counter is incremented. This succession of examinationsteps accommodates both the Boolean OR and AND commands described above.

[0046] The significance of a “1” at bit fifteen preferably differs fromthe significance of a “1” at bits zero through fourteen in order toaccommodate a timer enable command. As mentioned above in thedescription of the graphical data entry user interface 20, bit fifteenis a timer-enable command bit. If bit fifteen is a “1”, then the PLC 14enables its timer. The timer preferably begins its count from zero. Thecurrent value of the timer, indicated in FIG. 7 as TIMER, is thencompared with the value of TIMVAL in a loop. If TIMER is greater than orequal to the value of TIMVAL (meaning the timer period selected by theuser has expired) then the step counter is incremented by one.

[0047] If the step counter is incremented by one, or if none of the bitszero through fifteen is a “1”, or if an input signal is not detected atany of the monitored inputs, then a default check routine is initiated.If the default routine does not determine that a default has occurred,the above-described process is repeated, starting with those stepsillustrated in FIG. 5. If the step counter is incremented, then theoutput data element, input control data element and timer value dataelement for the next step 26 are utilized in FIGS. 5-7. If the stepcounter is not incremented, then the previously used output dataelement, input control data element and timer value data element areused for the OUTWD, CNTWD, and TIMVAL variables, respectively. Thesesame data elements are used until either the step counter is incremented(i.e., an input signal is detected at a monitored input or TIMER isgreater than or equal to TIMVAL) or a default is detected.

[0048] The default routine checks to see if the step counter hasincremented within a predetermined period of time, such as ten seconds.This value may be a default value or be set by the user, but in any caseshould be larger than any timer values set by the user for a step 26that is a timer step. If the step counter has changed within thepredefined period of time, then the steps identified in FIG. 5 areexecuted. If the step counter has not changed within the predefined timeperiod, then a fault is detected. A fault detect sound, a fault detectlight, or other visual indicator connected to an output of the PLC 14 isthen preferably triggered. Alternatively or additionally, an alarm codeidentifying the particular fault may be displayed on the operatordisplay 19. Referring to FIG. 2 and interface 20, the user may select analarm code 38 for each step 26. Each alarm code preferably has aspecific meaning, either set by the user or taken from a master list ofalarm codes. If a default is detected, for example at STEP1, then thePLC 14 accesses an alarm table generated from the interface 20 in themanner described above for the timer value data table. The PLC 14accesses the alarm code from the alarm table for STEP1, i.e., alarm codedata element one.

[0049] As can be seen in FIG. 2, an alarm code of “12” is shown selectedfor STEP1. An alarm code of “12” may then be displayed on the operatordisplay 19 whereby the user may then look up the significance of analarm code 12 or the significance of the code may be determined by theoperator display 19 and be displayed to the user. For example, an alarmcode “12” may signify an extend fault for the pneumatic press exampledescribed above. The alarm code also indirectly identifies to the userthe programming step at which the default occurred. If a default isdetected, a reset button connected to the PLC is preferably continuouslychecked to see if it has been pressed. Once the reset button is pressed,the process can either continue from the current step identified by thestep counter or the step counter may be reset to zero to restart theprocess.

[0050] An exemplary graphical data entry user interface 20 alsopreferably includes a simulation or debug capability that may be used toinsure that the data entered in the input control grid 22, output grid24, timer values 28 and alarm codes 38 of the graphical data entry userinterface 20 represent the correct operating parameters for the PLC 14.Once the inputs, outputs, timer values, and alarm codes are selected bythe user in user interface 20, the output data table, input control datatable, timer value data table, and alarm code data table are downloadedto the PLC 14. The inputs and outputs of the PLC 14 are coupled to thecorrect input devices 16 and output devices 18, except that the userinterface 20 serves as the source of a start signal for the PLC 14.During real world operation, this start signal would typically come froma start button 16 or a central processor as described above inconnection with the CONFIG. window 44.

[0051] The user may send the start signal to the PLC 14 by selecting theSTART SET and START CLR window 46. By first pressing the START SETwindow and then the START CLR window, a start signal is toggled as aninput to the PLC 14, and the PLC 14 then operates according to the dataelements of the output, input control, timer value, and alarm code datatables. The user may identify the step 26 that the PLC 14 is currentlyexecuting by selecting the UPDATE window 48. The step 26 that the PLC isexecuting is then highlighted on the user interface 20, and any defaultsdetected by the PLC 14 are displayed to the user in ALARM window 50 (ifan alarm code 38 was selected by the user for that particular step 26).Pressing the RESET SET and then RESET CLR windows 52 is the equivalentof pressing the RESET button described in connection with FIG. 7. Theaction clears any alarms currently set and allows the programmed stepsto continue.

[0052] An exemplary graphical data entry user interface 20 alsopreferably includes a second simulation mode that may be used to checkthat the outputs of the PLC 14 are triggered in the correct sequence.Once the user interface 20 is configured, the output data table, timervalue data table, and alarm code data table are downloaded to the PLC14. The outputs of the PLC 14 are coupled to the correct output devices18. The user may then select the sequential step mode by selecting theSTEP ON window 62. Conversely, the STEP OFF window 64 may be used toturn this “step” mode off. The user manually sequences the PLC 14through the programmed steps 26 using the STEP windows 60. For example,STEP 0 is executed the first time that the user selects the STEP window60. The PLC does not check its inputs, timer inputs or otherwise, butrather produces the outputs dictated for STEP 0 by the downloaded outputdata table until the user again selects the STEP window 60, at whichtime the PLC 14 produces the outputs dictated for STEP 1. As describedabove, the step 26 that is currently being executed by the PLC 14 isalso highlighted on the user interface 20, and any defaults detectedduring a step 26 are displayed to the user in ALARM window 50, if analarm code 38 was selected by the user for that particular step 26. Byusing this simulation mode, the user may manually step through theprogrammed process and examine the process step-by-step in order toobserve that the correct outputs are triggered by the PLC 14 at thecorrect output devices 18 in the correct sequence.

[0053] The present invention can be embodied in the form of methods andapparatus for practicing those methods. The present invention can alsobe embodied in the form of program code embodied in tangible media, suchas floppy diskettes, CD-ROMs, hard drives, or any other machine-readablestorage medium, wherein, when the program code is loaded into andexecuted by a machine, such as a computer, the machine becomes anapparatus for practicing the invention. The present invention can alsobe embodied in the form of program code, for example, whether stored ina storage medium, loaded into and/or executed by a machine, ortransmitted over some transmission medium, such as over electricalwiring or cabling, through fiber optics, or via electromagneticradiation, wherein, when the program code is loaded into and executed bya machine, such as a computer, the machine becomes an apparatus forpracticing the invention. When implemented on a general-purposeprocessor, the program code segments combine with the processor toprovided a unique device that operates analogously to specific logiccircuits.

[0054] Although the invention has been described in terms of exemplaryembodiments, it is not limited thereto. Rather, the appended claimsshould be construed broadly to include other variants and embodiments ofthe invention that may be made by those skilled in the art withoutdeparting from the scope and range of equivalents of the invention.

What is claimed is:
 1. A method of programming a programmable logiccontroller, said programmable logic controller including a plurality ofinputs and a plurality of outputs, said programmable logic controllerdirecting a process through output signals at said outputs in responseto input signals at said inputs, comprising the steps of: displaying toa user on a monitor a graphical data entry user interface for aplurality of sequential steps, said graphical data entry user interfacerepresenting respective inputs to be monitored by said programmablelogic controller at each of said sequential steps and respective outputsto be initiated by said programmable logic controller at respective onesof said sequential steps; receiving, via said graphical data entry userinterface, an identification of at least one input selected by said userto be monitored for at least one of said sequential steps and anidentification of at least one output selected by said user to beinitiated for said at least one of said sequential steps; convertingsaid identification of said at least one input selected by said userinto an input control data table, said input control data tableincluding a plurality of input control data elements, each of said inputcontrol data elements corresponding to a respective one of saidplurality of sequential steps, a respective one of said input controldata elements representing said at least one input selected by saiduser; and converting said identification of said at least one outputselected by said user into an output data table, said output data tableincluding a plurality of output data elements, each of said output dataelements corresponding to a respective one of said plurality ofsequential steps, a respective one of said output data elementsrepresenting said at least one output selected by said user.
 2. Themethod of claim 1, wherein said graphical data entry user interfaceincludes a timer enable command option for each of said plurality ofsequential steps and a timer value option for each of said plurality ofsequential steps.
 3. The method of claim 2, further comprising the stepsof: receiving, via said graphical data entry user interface, a selectionby said user of a timer enable command for at least one of saidplurality of sequential steps; receiving, via said graphical data entryuser interface, a selection by said user of a timer value for said oneof said plurality of sequential steps; and creating a timer value datatable including at least one timer value data element, said timer valuedata element representing said timer value, wherein a respective one ofsaid input control data elements represents said timer enable commandfor said one of said sequential steps.
 4. The method of claim 3, whereinsaid input control data element includes a plurality of bits, a subsetof said plurality of bits representing individual inputs of saidprogrammable logic controller and at least a remaining one of saidplurality of bits representing said timer enable command.
 5. The methodof claim 1, wherein said input control data element includes a pluralityof bits and a subset of said plurality of bits represents individualinputs of said programmable logic controller.
 6. The method of claim 1,wherein said graphical data entry user interface is a check grid.
 7. Themethod of claim 1, further comprising the step of downloading said inputcontrol data table and said output data table to said programmable logiccontroller.
 8. The method of claim 1, wherein said output data elementincludes a plurality of bits and a subset of said plurality of bitsrepresents individual outputs of said programmable logic controller. 9.An apparatus for programming a programmable logic controller, saidprogrammable logic controller including a plurality of inputs and aplurality of outputs, said programmable logic controller directing aprocess through output signals at said outputs in response to inputsignals at said inputs, comprising: means for displaying to a user on amonitor a graphical data entry user interface for a plurality ofsequential steps, said graphical data entry user interface representingrespective inputs to be monitored by said programmable logic controllerat each of said sequential steps and respective outputs to be initiatedby said programmable logic controller at respective ones of saidsequential steps; means for receiving, via said graphical data entryuser interface, an identification of at least one input selected by saiduser to be monitored for at least one of said sequential steps and anidentification of at least one output selected by said user to beinitiated for said at least one of said sequential steps; means forconverting said identification of said at least one input selected bysaid user into an input control data table, said input control datatable including a plurality of input control data elements, each of saidinput control data elements corresponding to a respective one of saidplurality of sequential steps, a respective one of said input controldata elements representing said at least one input selected by saiduser; and means for converting said identification of said at least oneoutput selected by said user into an output data table, said output datatable including a plurality of output data elements, each of said outputdata elements corresponding to a respective one of said plurality ofsequential steps, a respective one of said output data elementsrepresenting said at least one output selected by said user.
 10. Theapparatus of claim 9, wherein said graphical data entry user interfaceincludes a timer enable command option for each of said plurality ofsequential steps and a timer value option for each of said plurality ofsequential steps.
 11. The apparatus of claim 10, further comprising:means for receiving, via said graphical data entry user interface, aselection by said user of a timer enable command for at least one ofsaid plurality of sequential steps; means for receiving, via saidgraphical data entry user interface, a selection by said user of a timervalue for said one of said plurality of sequential steps; and means forcreating a timer value data table including at least one timer valuedata element, said timer value data element representing said timervalue, wherein a respective one of said input control data elementsrepresents said timer enable command for said one of said sequentialsteps.
 12. The apparatus of claim 11, wherein said input control dataelement includes a plurality of bits, a subset of said plurality of bitsrepresenting individual inputs of said programmable logic controller andat least a remaining one of said plurality of bits representing saidtimer enable command.
 13. The apparatus of claim 9, wherein said inputcontrol data element includes a plurality of bits and a subset of saidplurality of bits represents individual inputs of said programmablelogic controller.
 14. The apparatus of claim 9, wherein said graphicaldata entry user interface is a check grid displayed on said monitor. 15.The apparatus of claim 9, further comprising means for downloading saidinput control data table and said output data table to said programmablelogic controller.
 16. The apparatus of claim 9, wherein said output dataelement includes a plurality of bits and a subset of said plurality ofbits represents individual outputs of said programmable logiccontroller.
 17. A computer-readable medium encoded with a computerprogram code for programming a programmable logic controller, saidprogrammable logic controller including a plurality of inputs and aplurality of outputs, said programmable logic controller directing aprocess through output signals at said outputs in response to inputsignals at said inputs, the medium comprising: a first code segment fordisplaying to a user on a monitor a graphical data entry user interfacefor a plurality of sequential steps, said graphical data entry userinterface representing respective inputs to be monitored by saidprogrammable logic controller at each of said sequential steps andrespective outputs to be initiated by said programmable logic controllerat respective ones of said sequential steps; a second code segment forreceiving, via said graphical data entry user interface, anidentification of at least one input selected by said user to bemonitored for at least one of said sequential steps and anidentification of at least one output selected by said user to beinitiated for said at least one of said sequential steps; a third codesegment for converting said identification of said at least one inputselected by said user into an input control data table, said inputcontrol data table including a plurality of input control data elements,each of said input control data elements corresponding to a respectiveone of said plurality of sequential steps, a respective one of saidinput control data elements representing said at least one inputselected by said user; and a fourth code segment for converting saididentification of said at least one output selected by said user into anoutput data table, said output data table including a plurality ofoutput data elements, each of said output data elements corresponding toa respective one of said plurality of sequential steps, a respective oneof said output data elements representing said at least one outputselected by said user.
 18. The computer-readable medium of claim 17,wherein said graphical data entry user interface includes a timer enablecommand option for each of said plurality of sequential steps and atimer value option for each of said plurality sequential steps.
 19. Thecomputer-readable medium of claim 18, further comprising: a fifth codesegment for receiving, via said graphical data entry user interface, aselection by said user of a timer enable command for at least one ofsaid plurality of sequential steps; a sixth code segment for receiving,via said graphical data entry user interface, a selection by said userof a timer value for said one of said plurality of sequential steps; anda seventh code segment for creating a timer value data table includingat least one timer value data element, said timer value data elementrepresenting said timer value, wherein a respective one of said inputcontrol data elements represents said timer enable command for said oneof said sequential steps.
 20. A computer data signal embodied in acarrier wave encoded with computer program code for programming aprogrammable logic controller, said programmable logic controllerincluding a plurality of inputs and a plurality of outputs, saidprogrammable logic controller directing a process through output signalsat said outputs in response to input signals at said inputs, comprising:a first code segment for displaying to a user on a monitor a graphicaldata entry user interface for a plurality of sequential steps, saidgraphical data entry user interface representing respective inputs to bemonitored by said programmable logic controller at each of saidsequential steps and respective outputs to be initiated by saidprogrammable logic controller at respective ones of said sequentialsteps; a second code segment for receiving, via said graphical dataentry user interface, an identification of at least one input selectedby said user to be monitored for at least one of said sequential stepsand an identification of at least one output selected by said user to beinitiated for said at least one of said sequential steps; a third codesegment for converting said identification of said at least one inputselected by said user into an input control data table, said inputcontrol data table including a plurality of input control data elements,each of said input control data elements corresponding to a respectiveone of said plurality of sequential steps, a respective one of saidinput control data elements representing said at least one inputselected by said user; and a fourth code segment for converting saididentification of said at least one output selected by said user into anoutput data table, said output data table including a plurality ofoutput data elements, each of said output data elements corresponding toa respective one of said plurality of sequential steps, a respective oneof said output data elements representing said at least one outputselected by said user.
 21. The computer data signal of claim 20, whereinsaid graphical data entry user interface includes a timer enable commandoption for each of said plurality of sequential steps and a timer valueoption for each of said sequential steps.
 22. The computer data signalof claim 21, further comprising: a fifth code segment for receiving, viasaid graphical data entry user interface, a selection by said user of atimer enable command for at least one of said plurality of sequentialsteps; a sixth code segment for receiving, via said graphical data entryuser interface, a selection by said user of a timer value for said oneof said plurality of sequential steps; and a seventh code segment forcreating a timer value data table including at least one timer valuedata element, said timer value data element representing said timervalue, wherein a respective one of said input control data elementsrepresents said timer enable command for said one of said sequentialsteps.
 23. A method of controlling a process with a programmable logiccontroller, said programmable logic controller including a plurality ofinputs and a plurality of outputs, said programmable logic controllerdirecting said process through signals at said outputs in response toinput signals at said inputs, comprising the steps of: accessing withsaid programmable logic controller an input control data element for asequential step and an output data element for said sequential step froman input control data table and an output data table, respectively, saidinput control data table including input control data elements for aplurality of sequential steps that include said sequential step and saidoutput data table including a plurality of output data elements for saidplurality of sequential steps; providing output signals at outputs ofsaid programmable logic controller identified by said output dataelement to be activated for said sequential step; monitoring inputsidentified by said input control data element to be monitored for saidsequential step; and performing a next one of said plurality ofsequential steps if an input signal is detected for at least one of saidmonitored inputs.
 24. The method of claim 23, wherein at least one inputcontrol data element represents a timer enable command for a respectiveone of said plurality of sequential steps, said method furthercomprising the steps of: accessing with said programmable logiccontroller a timer value from a timer value data table for saidsequential step; enabling a timer for a time period indicated by saidtimer value for said sequential step; and performing a next sequentialstep when said time period expires.
 25. The method of claim 24, whereinsaid input control data element includes a plurality of bits and asubset of said plurality of bits represents individual inputs of saidprogrammable logic controller and at least one of said subset of bitsrepresents said timer enable command.
 26. The method of claim 23,wherein said input control data element includes a plurality of bits anda subset of said plurality of bits represents individual inputs of saidprogrammable logic controller.
 27. The method of claim 23, wherein saidinput control data element and said output data element are accessedfrom a local storage medium.
 28. The method of claim 23, wherein saidoutput data element includes a plurality of bits and a subset of saidplurality of bits represents individual outputs of said programmablelogic controller.
 29. The method of claim 23, further comprising thesteps of: creating said input control data table; and creating saidoutput data table.
 30. The method of claim 29, wherein said steps ofcreating said input control data table and said output data tableinclude the following steps: displaying to a user on a monitor agraphical data entry user interface for a plurality of sequential steps,said graphical data entry user interface representing respective inputsto be monitored by said programmable logic controller at each of saidsequential steps and respective outputs to be initiated by saidprogrammable logic controller at respective ones of said sequentialsteps; receiving, via said graphical data entry user interface, anidentification of at least one input selected by said user to bemonitored for at least one of said sequential steps and anidentification of at least one output selected by said user to beinitiated for said at least one of said sequential steps; convertingsaid identification of said at least one input selected by said userinto said input control data table; and converting said identificationof said at least one output selected by said user into said output datatable.
 31. The method of claim 30, wherein said graphical data entryuser interface includes a timer enable command option for each of saidplurality of sequential steps and a timer value option for each of saidplurality of sequential steps.
 32. The method of claim 31, furthercomprising the steps of: receiving, via said graphical data entry userinterface, a selection by said user of a timer enable command for atleast one of said plurality of sequential steps; receiving, via saidgraphical data entry user interface, a selection by said user of a timervalue for said one of said plurality of sequential steps; and creating atimer value data table including at least one timer value data element,said timer value data element representing said timer value.
 33. Themethod of claims 32, wherein at least one input control data elementrepresents a timer enable command for a respective one of said pluralityof sequential steps, said method further comprising the steps of:accessing with said programmable logic controller a timer value from atimer value data table for said sequential step; enabling a timer for atime period indicated by said timer value for said sequential step; andperforming a next sequential step when said time period expires.
 34. Aprogrammable logic controller for controlling a process, saidprogrammable logic controller comprising: a plurality of inputs and aplurality of outputs, said programmable logic controller directing saidprocess via signals provided at said outputs in response to inputsignals at said inputs; means for accessing an input control dataelement for a sequential step and an output data element for saidsequential step from an input control data table and an output datatable, respectively, said input control data table including inputcontrol data elements for a plurality of sequential steps that includesaid sequential step and said output data table including a plurality ofoutput data elements for said plurality of sequential steps; means forproviding output signals at outputs of said programmable logiccontroller identified by said output data element to be activated forsaid sequential step; means for monitoring inputs identified by saidinput control data element to be monitored for said sequential step; andmeans for performing a next one of said plurality of sequential steps ifan input signal is detected for at least one of said monitored inputs.35. The programmable logic controller of claim 34, wherein at least oneinput control data element represents a timer enable command for arespective one of said plurality of sequential steps, said programmablelogic controller further comprising: means for accessing a timer valuefrom a timer value data table for said sequential step; means forenabling a timer for a time period indicated by said timer value forsaid sequential step; and means for performing a next sequential stepwhen said time period expires.
 36. The programmable logic controller ofclaim 35, wherein said input control data element includes a pluralityof bits and a subset of said plurality of bits represents individualinputs of said programmable logic controller and at least one of saidsubset of bits represents said timer enable command.
 37. Theprogrammable logic controller of claim 34, wherein said input controldata element includes a plurality of bits and a subset of said pluralityof bits represents individual inputs of said programmable logiccontroller.
 38. The programmable logic controller of claim 34, whereinsaid input control data element and said output data element areaccessed from a local storage medium.
 39. The programmable logiccontroller of claim 34, wherein said output data element includes aplurality of bits and a subset of said plurality of bits representsindividual outputs of said programmable logic controller.
 40. Theprogrammable logic controller of claim 34, further comprising: means forcreating said input control data table; and means for creating saidoutput data table.
 41. The programmable logic controller of claim 40,wherein said means for creating said input control data table and saidoutput data table include the following: means for displaying to a useron a monitor a graphical data entry user interface for a plurality ofsequential steps, said graphical data entry user interface representingrespective inputs to be monitored by said programmable logic controllerat each of said sequential steps and respective outputs to be initiatedby said programmable logic controller at respective ones of saidsequential steps; means for receiving, via said graphical data entryuser interface, an identification of at least one input selected by saiduser to be monitored for at least one of said sequential steps and anidentification of at least one output selected by said user to beinitiated for said at least one of said sequential steps; means forconverting said identification of said at least one input selected bysaid user into said input control data table; and means for convertingsaid identification of said at least one output selected by said userinto said output data table.
 42. The programmable logic controller ofclaim 41, wherein said graphical data entry user interface includes atimer enable command option for each of said plurality of sequentialsteps and a timer value option for each of said plurality of sequentialsteps.
 43. The programmable logic controller of claim 42, furthercomprising: means for receiving, via said graphical data entry userinterface, a selection by said user of a timer enable command for atleast one of said plurality of sequential steps; means for receiving,via said graphical data entry user interface, a selection by said userof a timer value for said one of said plurality of sequential steps; andmeans for creating a timer value data table including at least one timervalue data element, said timer value data element representing saidtimer value.
 44. The programmable logic controller of claims 43, whereinat least one input control data element represents a timer enablecommand for a respective one of said plurality of sequential steps,further comprising: means for accessing with said programmable logiccontroller a timer value from a timer value data table for saidsequential step; means for enabling a timer for a time period indicatedby said timer value for said sequential step; and means for performing anext sequential step when said time period expires.
 45. Acomputer-readable medium encoded with a computer program code forcontrolling a process with a programmable logic controller, saidprogrammable logic controller including a plurality of inputs and aplurality of outputs, said programmable logic controller directing saidprocess through signals at said outputs in response to input signals atsaid inputs, the medium comprising: a first code segment that causessaid programmable logic controller to access an input control dataelement for a sequential step and an output data element for saidsequential step from an input control data table and an output datatable, respectively, said input control data table including inputcontrol data elements for a plurality of sequential steps that includesaid sequential step and said output data table including a plurality ofoutput data elements for said plurality of sequential steps; a secondcode segment that causes said programmable logic controller to provideoutput signals at outputs of said programmable logic controlleridentified by said output data element to be activated for saidsequential step; a third code segment that causes said programmablelogic controller to monitor inputs identified by said input control dataelement to be monitored for said sequential step; and a fourth codesegment that causes said programmable logic controller to perform a nextone of said plurality of sequential steps if an input signal is detectedfor at least one of said monitored inputs.
 46. The computer-readablemedium of claim 45, wherein at least one input control data elementrepresents a timer enable command for a respective one of said pluralityof sequential steps, said computer-readable medium further comprising: afifth code segment that causes said programmable logic controller toaccess a timer value from a timer value data table for said sequentialstep; a sixth code segment that causes said programmable logiccontroller to enable a timer for a time period indicated by said timervalue for said sequential step; and a seventh code segment that causessaid programmable logic controller to perform a next sequential stepwhen said time period expires.
 47. A computer data signal embodied in acarrier wave encoded with computer program code for controlling aprocess with a programmable logic controller, said programmable logiccontroller including a plurality of inputs and a plurality of outputs,said programmable logic controller directing a process through outputsignals at said outputs in response to input signals at said inputs,said computer data signal comprising: a first code segment that causessaid programmable logic controller to access an input control dataelement for a sequential step and an output data element for saidsequential step from an input control data table and an output datatable, respectively, said input control data table including inputcontrol data elements for a plurality of sequential steps that includesaid sequential step and said output data table including a plurality ofoutput data elements for said plurality of sequential steps; a secondcode segment that causes said programmable logic controller to provideoutput signals at outputs of said programmable logic controlleridentified by said output data element to be activated for saidsequential step; a third code segment that causes said programmablelogic controller to monitor inputs identified by said input control dataelement to be monitored for said sequential step; and a fourth codesegment that causes said programmable logic controller to perform a nextone of said plurality of sequential steps if an input signal is detectedfor at least one of said monitored inputs.
 48. The computer data signalof claim 47, wherein at least one input control data element representsa timer enable command for a respective one of said plurality ofsequential steps, said computer data signal further comprising: a fifthcode segment that causes said programmable logic controller to access atimer value from a timer value data table for said sequential step; asixth code segment that causes said programmable logic controller toenable a timer for a time period indicated by said timer value for saidsequential step; and a seventh code segment that causes saidprogrammable logic controller to perform a next sequential step whensaid time period expires.